#include <iostream>
#include <vector>

enum status
{
    EMPTY,
    EXISTS,
    DELETE
};
template <class K, class V>
struct HashNode
{
    std::pair<K, V> _kv;
    status _sta;
};

template <class K, class V>
class HashTable
{
public:
    HashTable(size_t n = 10)
    {
        _table.resize(n);
    }
    bool Insert(std::pair<K, V> kv)
    {
        if (_n * 10 / _tables.size() >= 7)
        {
            // 扩容
            size_t newSize = _tables.size() * 2;
            HashTable<K, V> newTable(newSize);
            for (int i = 0; i < _tables.size(); i++)
            {
                if (_tables[i]._sta == EXIST)
                {
                    newTable.Insert(_tables[i]._tabkes);
                }
            }
            _table.swap(newTable._tables);
        }
        int hashi = kv.first % _tables.size(); //????
        while (_tables[hashi]._sta == EXISTS)
        {
            hashi++;
            hashi %= _tables.size();
        }
        _tables[hashi]._kv = kv;
        _tables[hashi]._s = EXIST;
        ++_n;
        return true;
    }

private:
    std::vector<HashNode<K,V>> _tables;
    size_t _n; // 负载因子
};

int main()
{
    return 0;
}